package com.yb0os1.Array;

public class MinSubArrayLen {
    /*
    给定一个含有 n 个正整数的数组和一个正整数 target 。
    找出该数组中满足其总和大于等于 target 的长度最小的子数组
     [numsl, numsl+1, ..., numsr-1, numsr] ，
    并返回其长度。如果不存在符合条件的子数组，返回 0
     */
    public int minSubArrayLen(int target, int[] nums) {
        int res = Integer.MAX_VALUE;
        int sum = 0;
        int l = 0;
        for (int r = 0; r < nums.length; r++) {
           sum+=nums[r];
           while (sum>=target){
               res = Math.min(res,r-l+1);
               sum-=nums[l++];
           }
        }
        return res==Integer.MAX_VALUE?0:res;
    }
}
